home *** CD-ROM | disk | FTP | other *** search
- head 1.21;
- access;
- symbols
- fontscreen:1.1;
- locks; strict;
- comment @ * @;
-
-
- 1.21
- date 94.12.07.02.33.27; author jsshephe; state Exp;
- branches;
- next ;
-
-
- desc
- @Actions when gadgets and menu items are pressed.
- @
-
-
- 1.21
- log
- @Made a little correction in teh PREFS_DELETEClicked that remove a gcc warning.
- @
- text
- @#include <exec/types.h>
- #include <intuition/intuition.h>
- #include <libraries/gadtools.h>
- #include <libraries/asl.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include "showprefs.h"
-
- /* protos */
- #ifdef __OPTIMIZE__
- #include <inline/intuition.h>
- #include <inline/gadtools.h>
- #include <inline/exec.h>
- #include <inline/asl.h>
- #include <inline/dos.h>
- #else
- #include <clib/intuition_protos.h>
- #include <clib/gadtools_protos.h>
- #include <clib/asl_protos.h>
- #include <clib/exec_protos.h>
- #include <clib/dos_protos.h>
- #endif
-
- #ifdef __GNUC__
- inline
- #endif
- struct SuffixList *FindNode(struct List *list, int number) {
- struct SuffixList *node= (struct SuffixList *)Suffix_List->lh_Head;
- int i;
-
- for (i=0; i < number; i++, node=(struct SuffixList *)node->sl_Node.ln_Succ) {};
- return node;
- }
-
- /* routine when gadget "Suffixes" in ListView is clicked. */
- int PREFS_SUFFIXESClicked( struct IntuiMessage *msg, struct Gadget **PrefsGadgets ) {
- struct SuffixList *node = FindNode(Suffix_List, msg->Code);
-
- GT_SetGadgetAttrs(PrefsGadgets[PREFS_SUFFIX],PrefsWnd,NULL,
- GTST_String, node->sl_Node.ln_Name,
- (TAG_DONE) );
-
- GT_SetGadgetAttrs(PrefsGadgets[PREFS_COMMAND],PrefsWnd,NULL,
- GTST_String, node->command,
- (TAG_DONE) );
-
- GT_SetGadgetAttrs(PrefsGadgets[PREFS_ASYNCH],PrefsWnd,NULL,
- GTCB_Checked, node->Asynch,
- (TAG_DONE) );
-
- /* GadgetID stores # in list of selected suffix */
- PrefsGadgets[PREFS_ASYNCH]->GadgetID =
- PrefsGadgets[PREFS_SUFFIX]->GadgetID =
- PrefsGadgets[PREFS_COMMAND]->GadgetID = msg->Code;
-
- #ifdef debug
- printf("Number put in node is %d\n",PrefsGadgets[PREFS_SUFFIX]->GadgetID);
- #endif
-
- return TRUE;
- }
-
- /* routine when gadget "Save" is clicked. */
- int PREFS_SAVEClicked( struct IntuiMessage *msg, struct Gadget **PrefsGadgets ) {
- SavePrefs("env:show.prefs");
- SavePrefs("envarc:show.prefs");
- return FALSE;
- }
-
- /* routine when gadget "Suffix" is clicked. */
- int PREFS_SUFFIXClicked( struct IntuiMessage *msg, struct Gadget **PrefsGadgets ) {
- struct SuffixList *node;
-
- if (PrefsGadgets[PREFS_SUFFIX]->GadgetID != (UWORD)-1) {
- node = FindNode(Suffix_List, PrefsGadgets[PREFS_SUFFIX]->GadgetID);
-
- #ifdef debug
- printf("Number of node is %d\n",PrefsGadgets[PREFS_SUFFIX]->GadgetID);
- printf("previous suffix %s\n",node->sl_Node.ln_Name);
- #endif
-
- /* turn off the list first and then restore it */
- GT_SetGadgetAttrs(PrefsGadgets[PREFS_SUFFIXES],PrefsWnd,NULL,
- (GTLV_Labels), ~0,
- (TAG_DONE) );
-
- strcpy(node->sl_Node.ln_Name,GetString(PrefsGadgets[PREFS_SUFFIX]));
-
- GT_SetGadgetAttrs(PrefsGadgets[PREFS_SUFFIXES],PrefsWnd,NULL,
- (GTLV_Labels), Suffix_List,
- (TAG_DONE) );
- }
- return TRUE;
- }
-
- /* routine when gadget "Command" is clicked. */
- int PREFS_COMMANDClicked( struct IntuiMessage *msg, struct Gadget **PrefsGadgets ) {
- struct SuffixList *node;
-
- if (PrefsGadgets[PREFS_COMMAND]->GadgetID != (UWORD)-1) {
- node = FindNode(Suffix_List, PrefsGadgets[PREFS_COMMAND]->GadgetID);
-
- #ifdef debug
- printf("Number of node is %d\n",PrefsGadgets[PREFS_COMMAND]->GadgetID);
- printf("previous command %s\n",node->command);
- #endif
-
- /* turn off the list first and then restore it */
- GT_SetGadgetAttrs(PrefsGadgets[PREFS_SUFFIXES],PrefsWnd,NULL,
- (GTLV_Labels), ~0,
- (TAG_DONE) );
-
- strcpy(node->command,GetString(PrefsGadgets[PREFS_COMMAND]));
-
- GT_SetGadgetAttrs(PrefsGadgets[PREFS_SUFFIXES],PrefsWnd,NULL,
- (GTLV_Labels), Suffix_List,
- (TAG_DONE) );
- }
-
- return TRUE;
- }
-
- /* routine when gadget "Asynchronous" is clicked. */
- int PREFS_ASYNCHClicked( struct IntuiMessage *msg, struct Gadget **PrefsGadgets ) {
- struct SuffixList *node;
-
- if (PrefsGadgets[PREFS_ASYNCH]->GadgetID != (UWORD)-1) {
- node = FindNode(Suffix_List, PrefsGadgets[PREFS_ASYNCH]->GadgetID);
-
- #ifdef debug
- printf("Number of node is %d\n",PrefsGadgets[PREFS_ASYNCH]->GadgetID);
- printf("previous asynch is %d\n",node->Asynch);
- #endif
-
- /* turn off the list first and then restore it */
- GT_SetGadgetAttrs(PrefsGadgets[PREFS_SUFFIXES],PrefsWnd,NULL,
- (GTLV_Labels), ~0,
- (TAG_DONE) );
-
- node->Asynch = (PrefsGadgets[PREFS_ASYNCH]->Flags & GFLG_SELECTED) ? TRUE : FALSE;
-
- GT_SetGadgetAttrs(PrefsGadgets[PREFS_SUFFIXES],PrefsWnd,NULL,
- (GTLV_Labels), Suffix_List,
- (TAG_DONE) );
- }
-
- return TRUE;
- }
-
- /* routine when gadget "Cancel" is clicked. */
- int PREFS_CANCELClicked( struct IntuiMessage *msg, struct Gadget **PrefsGadgets ) {
- return FALSE;
- }
-
- /* routine when gadget "New" is clicked. */
- int PREFS_NEWClicked( struct IntuiMessage *msg, struct Gadget **PrefsGadgets ) {
- struct SuffixList *NewNode = MakeNode("(New Suffix)","",TRUE);
-
- GT_SetGadgetAttrs(PrefsGadgets[PREFS_SUFFIXES],PrefsWnd,NULL,
- (GTLV_Labels), ~0,
- (TAG_DONE) );
-
- if (NewNode != NULL) {
- AddHead(Suffix_List,(struct Node *)NewNode);
-
-
- GT_SetGadgetAttrs(PrefsGadgets[PREFS_SUFFIX],PrefsWnd,NULL,
- GTST_String, NewNode->sl_Node.ln_Name,
- (TAG_DONE) );
-
- GT_SetGadgetAttrs(PrefsGadgets[PREFS_COMMAND],PrefsWnd,NULL,
- GTST_String, NewNode->command,
- (TAG_DONE) );
-
- GT_SetGadgetAttrs(PrefsGadgets[PREFS_ASYNCH],PrefsWnd,NULL,
- GTCB_Checked, NewNode->Asynch,
- (TAG_DONE) );
-
- /* GadgetID stores # in list of selected suffix */
- PrefsGadgets[PREFS_ASYNCH]->GadgetID =
- PrefsGadgets[PREFS_SUFFIX]->GadgetID =
- PrefsGadgets[PREFS_COMMAND]->GadgetID = 0;
- }
- else {
- Error("New suffix not created. Low on memory.");
- }
-
- GT_SetGadgetAttrs(PrefsGadgets[PREFS_SUFFIXES],PrefsWnd,NULL,
- (GTLV_Labels), Suffix_List,
- (TAG_DONE) );
-
- return TRUE;
- }
-
-
- /* routine when gadget "Copy" is clicked. */
- int PREFS_COPYClicked( struct IntuiMessage *msg, struct Gadget **PrefsGadgets ) {
-
- struct SuffixList *NewNode;
- struct SuffixList *node;
-
- if (PrefsGadgets[PREFS_SUFFIX]->GadgetID != (UWORD)-1) {
- node = FindNode(Suffix_List, PrefsGadgets[PREFS_SUFFIX]->GadgetID);
-
- /* turn off the list first and then restore it */
- GT_SetGadgetAttrs(PrefsGadgets[PREFS_SUFFIXES],PrefsWnd,NULL,
- (GTLV_Labels), ~0,
- (TAG_DONE) );
-
- NewNode= MakeNode(node->sl_Node.ln_Name,node->command, node->Asynch);
-
- if (NewNode != NULL) {
- AddHead(Suffix_List,(struct Node *)NewNode);
-
- GT_SetGadgetAttrs(PrefsGadgets[PREFS_SUFFIX],PrefsWnd,NULL,
- GTST_String, NewNode->sl_Node.ln_Name,
- (TAG_DONE) );
-
- GT_SetGadgetAttrs(PrefsGadgets[PREFS_COMMAND],PrefsWnd,NULL,
- GTST_String, NewNode->command,
- (TAG_DONE) );
-
- GT_SetGadgetAttrs(PrefsGadgets[PREFS_ASYNCH],PrefsWnd,NULL,
- GTCB_Checked, NewNode->Asynch,
- (TAG_DONE) );
-
- /* GadgetID stores # in list of selected suffix */
- PrefsGadgets[PREFS_ASYNCH]->GadgetID =
- PrefsGadgets[PREFS_SUFFIX]->GadgetID =
- PrefsGadgets[PREFS_COMMAND]->GadgetID = 0;
-
- }
- else {
- Error("Suffix not copied. Low on memory.");
- }
-
- GT_SetGadgetAttrs(PrefsGadgets[PREFS_SUFFIXES],PrefsWnd,NULL,
- (GTLV_Labels), Suffix_List,
- (TAG_DONE) );
-
- } /* if */
- return TRUE;
- }
-
- /* routine when gadget "Delete" is clicked. */
- int PREFS_DELETEClicked( struct IntuiMessage *msg, struct Gadget **PrefsGadgets ) {
- struct SuffixList *node;
-
- if (PrefsGadgets[PREFS_SUFFIX]->GadgetID != (UWORD)-1) {
- node = FindNode(Suffix_List, PrefsGadgets[PREFS_SUFFIX]->GadgetID);
-
- /* turn off the list first and then restore it */
- GT_SetGadgetAttrs(PrefsGadgets[PREFS_SUFFIXES],PrefsWnd,NULL,
- (GTLV_Labels), ~0,
- (TAG_DONE) );
-
- Remove((struct Node *)node);
- ResetGadgets(PrefsGadgets);
- }
- return TRUE;
- }
-
- int PREFS_USEClicked( struct IntuiMessage *msg, struct Gadget **PrefsGadgets ) {
- /* routine when gadget "Use" is clicked. */
- SavePrefs("env:show.prefs");
- return FALSE;
- }
-
- /* routine when (sub)item "Open..." is selected. */
- int PrefsPREFS_OPEN( struct Gadget **PrefsGadgets ) {
-
- struct FileRequester *fr;
- char file[MAX_LENGTH];
-
- if (fr = (struct FileRequester *)AllocAslRequestTags(ASL_FileRequest,
- ASLFR_Window, PrefsWnd,
- ASLFR_TitleText, "Load Show Preferences",
- ASLFR_InitialDrawer, "SYS:prefs/presets",
- ASLFR_InitialFile, "show.presets",
- ASLFR_InitialPattern, "#?.(prefs|presets)",
- ASLFR_Flags1, FILF_PATGAD,
- TAG_DONE)) {
-
- if (AslRequest(fr,NULL)) {
- strcpy(file,fr->rf_Dir);
- AddPart(file,fr->rf_File,MAX_LENGTH);
- LoadPrefs(file,PrefsGadgets,FALSE,NULL);
- }
- FreeAslRequest(fr);
- }
- else {
- Error("Cannot allocate filerequester. Low on memory.");
- }
- return TRUE;
- }
-
- /* routine when (sub)item "About" is selected. */
- int PrefsPREFS_ABOUT( struct Gadget **PrefsGadgets ) {
- static struct EasyStruct es = {
- sizeof(struct EasyStruct),
- 0,
- "ShowPrefs About",
- "Prefs Version 1.0\n"
- "©1994 by Jeff Shepherd\n"
- "Send comments and suggestions to\n"
- "jsshephe@@undergrad.math.uwaterloo.ca\n"
- "Read my home page at: http://www.undergrad.math.uwaterloo.ca/~jsshephe/index.html",
- "OK"
- };
-
- EasyRequestArgs(PrefsWnd, &es, NULL, NULL);
- return TRUE;
- }
-
- /* routine when (sub)item "Quit" is selected. */
- int PrefsPREFS_QUIT( struct Gadget **PrefsGadgets ) {
- return FALSE;
- }
-
- /* routine when (sub)item "Last Saved" is selected. */
- int PrefsPREFS_LAST( struct Gadget **PrefsGadgets ) {
- LoadPrefs("envarc:show.prefs",PrefsGadgets,FALSE,NULL);
- return TRUE;
- }
-
- /* routine when (sub)item "Save as..." is selected. */
- int PrefsPREFS_SAVEAS( struct Gadget **PrefsGadgets ) {
-
- struct FileRequester *fr;
- char file[MAX_LENGTH];
-
- if (fr = (struct FileRequester *)AllocAslRequestTags(ASL_FileRequest,
- ASLFR_Window, PrefsWnd,
- ASLFR_TitleText, "Save Show Preferences",
- ASLFR_InitialDrawer, "SYS:prefs/presets",
- ASLFR_InitialFile, "show.presets",
- ASLFR_Flags1, FILF_PATGAD | FILF_SAVE,
- TAG_DONE)) {
-
- if (AslRequest(fr,NULL)) {
- strcpy(file,fr->rf_Dir);
- AddPart(file,fr->rf_File,MAX_LENGTH);
- SavePrefs(file);
- }
- FreeAslRequest(fr);
- }
- else {
- Error("Cannot allocate filerequester. Low on memory.");
- }
-
- return TRUE;
- }
-
- /* routine when (sub)item "Restore" is selected. */
- int PrefsPREFS_RESTORE( struct Gadget **PrefsGadgets ) {
- struct SuffixList *node, *NewNode;
-
- /* turn off the list first and then restore it */
- GT_SetGadgetAttrs(PrefsGadgets[PREFS_SUFFIXES],PrefsWnd,NULL,
- (GTLV_Labels), ~0,
- (TAG_DONE) );
-
- Destroy_List(Suffix_List);
- for (node = (struct SuffixList *)Duplicate->lh_Head; node->sl_Node.ln_Succ;
- node=(struct SuffixList *)node->sl_Node.ln_Succ) {
- if (NewNode =MakeNode(node->sl_Node.ln_Name, node->command, node->Asynch)) {
- AddTail(Suffix_List,(struct Node *)NewNode);
- }
- else {
- Error("Suffix not copied. Low on memory.");
- }
- } /* for */
-
- ResetGadgets(PrefsGadgets);
- return TRUE;
-
- }
-
- /* Load preference file and reset gadgets */
- void LoadPrefs(char *filename, struct Gadget **PrefsGadgets, BOOL Dup, struct List *DupList) {
-
- GT_SetGadgetAttrs(PrefsGadgets[PREFS_SUFFIXES],PrefsWnd,NULL,
- (GTLV_Labels), ~0,
- (TAG_DONE) );
-
- Destroy_List(Suffix_List);
- Load(filename,Dup,DupList);
-
- ResetGadgets(PrefsGadgets);
- }
-
- /* reset suffix, command, Asynch gadgets */
- void ResetGadgets(struct Gadget **PrefsGadgets) {
-
- GT_SetGadgetAttrs(PrefsGadgets[PREFS_SUFFIXES],PrefsWnd,NULL,
- (GTLV_Labels), Suffix_List,
- (TAG_DONE) );
-
- GT_SetGadgetAttrs(PrefsGadgets[PREFS_SUFFIX],PrefsWnd,NULL,
- GTST_String, "",
- (TAG_DONE) );
-
- GT_SetGadgetAttrs(PrefsGadgets[PREFS_COMMAND],PrefsWnd,NULL,
- GTST_String, "",
- (TAG_DONE) );
-
- GT_SetGadgetAttrs(PrefsGadgets[PREFS_ASYNCH],PrefsWnd,NULL,
- GTCB_Checked, FALSE,
- (TAG_DONE) );
-
- /* GadgetID stores # in list of selected suffix */
- PrefsGadgets[PREFS_ASYNCH]->GadgetID =
- PrefsGadgets[PREFS_SUFFIX]->GadgetID =
- PrefsGadgets[PREFS_COMMAND]->GadgetID = (UWORD)-1;
- }
- @
-